Repository navigation
Conversation
Finding where an error went by meant ⌘F in each pane, in each tab. The
Commands sidebar's filter already searched commands and what they
printed, but for one pane. It now has a scope switch, This Pane / All
Panes, and ⇧⌘F (Edit › Find › Find in All Panes…, the palette, the
terminal's context menu) opens it on All Panes with the keyboard in the
filter.
All Panes lists the commands of every pane in every window, under a
heading for the pane: its window when there are several, its tab, where
it is in the tab ("left", "top right", from SplitLayout.placeNames) and
its folder. Panes restored at launch come with their commands. What's
searched is each command's line and the output kept when it finished, so
a pane a full-screen program has taken over is searched too.
The filter now has Find's Aa, ab and .* toggles, in both scopes, shared
with the find bar as FindOptionToggles. TimelineFilter carries the query,
the options and ⚠; CapturedOutput.firstMatch gives the line that matched
with the lines around it, and a row shows that line from a little before
the match, the rest on hover. Matching no longer ignores accents, as
Find doesn't.
Going to a command in All Panes brings its window to the front, selects
its tab and pane, scrolls to the line that matched and opens Find there
with the same query and options, current on that line, so ⌘G walks the
rest. A command no longer in the scrollback opens in the output viewer.
Arrow keys only move the selection there, since going can switch tabs
and windows.
Pane.rows(of:) used to forget a command's place when its pane had no
window to measure rows in, as in a tab that isn't selected; searching
every pane would have done that to every background pane, so it now
leaves them alone.
Tests cover the filter's options, the match and its excerpt, place names,
the menu item and an end-to-end search over three panes in two tabs with
zsh. Docs and screenshots are updated.
Closes #21.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #21. ⇧⌘F opens the Commands sidebar on All Panes: the commands of every pane in every window, with what they printed, under the pane they ran in. Click one and Codec goes there, to the line that matched, with Find open on the same query so ⌘G walks the rest. A switch at the top of the sidebar, This Pane / All Panes, does the same with the mouse, and the filter gains Find's Aa / ab / .* toggles.
Screenshots
The sidebar's new scope switch and match options, over a command's output.
Summary
TimelineFilter(query,FindOptions, ⚠) replaces the plain-text query everywhere: the list, going to a command, and the output viewer's highlights. Matching no longer ignores accents, as Find doesn't.FindOptionTogglesis pulled out of the find bar and shared with the sidebar.panesDidChangewhen panes open or close, so it follows panes in other windows too.Pane.rows(of:)forgot a command's place when its pane had no window to measure rows in, as in a tab that isn't selected. Searching every pane would have done that to every background pane.Testing
swift build -j 2 --build-tests,swift test -j 2 --skip-build(571 tests pass) and the universalscripts/build-app.sh release.make screenshots.🤖 Generated with Claude Code